package n13.second;

import java.util.Optional;
import java.util.stream.Stream;

public class S03 {
	public static void main(String[] args) {
		System.out.println("流中多于1个数据，会展示计算过程，可通过get()方法获取Optional中的值：");
		Stream<Integer> si = Stream.of(12,8,10,5);
		Optional<Integer> op = si.reduce((sum,i2)->{
			System.out.println("\t"+sum+"\t"+i2);
			return sum+i2;
		});
		//System.out.println("结果="+op.get());
		op.ifPresent(System.out::println);
		System.out.println("\n流中只有1个数据，不会展示计算过程，也可通过orElse()方法获取Optional中的值：");
		si = Stream.of(12);
		Optional<Integer> op1 = si.reduce((sum,i2)->{
			System.out.println("\t"+sum+"\t"+i2);//只有一个数据时不会执行reduce方法
			return sum+i2;
		});
		System.out.println("结果="+op1.orElse(0));

		
		System.out.println("\n流中没有数据，不会展示计算过程，会通过orElse()方法获取默认值：");
		si=Stream.empty(); //流中没有数据
		Optional<Integer> op2 = si.reduce((sum,i2)->{
			System.out.println("\t"+sum+"\t"+i2);//只有一个数据时不会执行reduce方法
			return sum+i2;
		});
		System.out.println("结果="+op2.orElse(0));


	}
}
